/**
 * 工具方法的封装类
 * @author 周亮
 * @createDate 2019-05-22
 * @notice
 */
class Util {

	constructor() {

	}

	/**
	 * 时间格式化方法
	 * @param {Object} date 日期对象
	 * @param {Object} fmt 格式化格式
	 */
	static dateFormat(date, fmt) {
		let ret
		const opt = {
			"Y+": date.getFullYear().toString(), // 年
			"m+": (date.getMonth() + 1).toString(), // 月
			"d+": date.getDate().toString(), // 日
			"H+": date.getHours().toString(), // 时
			"M+": date.getMinutes().toString(), // 分
			"S+": date.getSeconds().toString() // 秒
			// 有其他格式化字符需求可以继续添加，必须转化成字符串
		}
		for (let k in opt) {
			ret = new RegExp("(" + k + ")").exec(fmt);
			if (ret) {
				fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
			}
		}
		return fmt
	}

	/**
	 * 判断对象是否为空对象
	 * @param {Object} obj 目标对象
	 */
	static isEmptyObj(obj) {
		for (var key in obj) {
			return false
		}
		return true
	}

	/**
	 * 判断两个对象是否相等的方法
	 * @param {Object} obj1 第一个对象
	 * @param {Object} obj2 第二个对象
	 */
	static isEqual(obj1, obj2) {
		let o1 = obj1 instanceof Object
		let o2 = obj2 instanceof Object
		if (!o1 || !o2) { /*  判断不是对象  */
			return obj1 === obj2
		}
		if (Object.keys(obj1).length !== Object.keys(obj2).length) {
			return false
		}
		for (let attr in obj1) {
			let t1 = obj1[attr] instanceof Object
			let t2 = obj2[attr] instanceof Object
			if (t1 && t2) {
				return Util.isEqual(obj1[attr], obj2[attr])
			} else if (obj1[attr] !== obj2[attr]) {
				return false
			}
		}
		return true
	}
	
	/**
	 * 随机生成字符串方法
	 * @param {Object} len 字符串的长度
	 */
	static randomString(len) {
		len = len || 32;
		let $chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678'; /****默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1****/
		let maxPos = $chars.length
		let pwd = ''
		for (let i = 0; i < len; i++) {
			pwd += $chars.charAt(Math.floor(Math.random() * maxPos))
		}
		return pwd
	}
	
	/**
	 * url 地址转 obj 方法
	 * @param {Object} url
	 */
	static urlToObj(url) {
		let returnObj = {}
		if (url.indexOf('?') > -1) {
			let urlArr = url.split('?')
			let paramStr = urlArr[urlArr.length - 1]
			if (paramStr.indexOf('&') > -1) {
				let paramArr = paramStr.split('&')
				for (let i = 0; i < paramArr.length; i++) {
					if (paramArr[i].indexOf('=') > -1) {
						let itemArr = paramArr[i].split('=')
						returnObj[itemArr[0]] = itemArr[1]
					}
				}
			}
		}
		return returnObj
	}

}

export default Util
